{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## RUL prediction using Long Short Term Memory (LSTM) network\n",
    "\n",
    "In this notebook, we will use LSTM to predict RUL of NASA's turbofan engine dataset FD001. We will show the implementation without going into the theory of LSTM. Readers who want to get an intuitive understanding of LSTMs, should read [this excellent blog](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) by Chris Olah."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import tensorflow as tf\n",
    "from tensorflow.keras import layers\n",
    "from tensorflow.keras.models import Sequential\n",
    "\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import sklearn\n",
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "from sklearn.metrics import mean_squared_error\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "np.random.seed(34)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Tensorflow version:  2.3.0\n",
      "Numpy version:  1.18.5\n",
      "Pandas version:  1.0.5\n",
      "Scikit-learn version:  0.23.1\n"
     ]
    }
   ],
   "source": [
    "print(\"Tensorflow version: \", tf.__version__)\n",
    "print(\"Numpy version: \", np.__version__)\n",
    "print(\"Pandas version: \", pd.__version__)\n",
    "print(\"Scikit-learn version: \", sklearn.__version__)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Data Preprocessing\n",
    "\n",
    "We strongly encourage readers to go through the [dataset description and prreprocessing notebook](https://github.com/biswajitsahoo1111/rul_codes_open/blob/master/notebooks/cmapss_notebooks/CMAPSS_data_description_and_preprocessing.ipynb). In that notebook we have explained how data preprocessing functions work with simple examples. In this notebook we will only use those functions. So prior familiarity with these functions is an advantage. Below are the parameters that we will use for data preprocessing:\n",
    "\n",
    "* Degradation model: Piecewise linear\n",
    "* Early RUL: 125\n",
    "* Window length: 30\n",
    "* Shift: 1\n",
    "* Data scaling: Standard scaling and Full dataset scaling.\n",
    "\n",
    "We will calculate two prediction scores on test data. In one case, we will take last 5 examples of test data for engine, calculate their predictions, and finally average those for each engine. In the second case, we will take only the last example of each engine and make predictions. The logic behind taking last 5 examples and averaging their predictions is to make the prediction robust against outliers. Due to some external factor, if our last example happens to be corrupted, its prediction outcome might be far off from the actual one. But if we average predictions from last 5 examples, we will get a more conservative estimate. \n",
    "\n",
    "In the following cell we will show boxplots of each column of training data. That will give us an idea about the values in different columns. If all the values in a column are constant, we drop those columns from our analysis.\n",
    "\n",
    "Readers can download the data from [here](https://ti.arc.nasa.gov/tech/dash/groups/pcoe/prognostic-data-repository/#turbofan). In the following cells, wherever data are read from a folder, readers should change the string to point to the respective folder from their system to run this notebook seamlessly. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1152x1512 with 21 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "train_data = pd.read_csv(\"/home/biswajit/data/cmapss_data/train_FD001.txt\", sep= \"\\s+\", header = None)\n",
    "plt.figure(figsize = (16, 21))\n",
    "for i in range(21):\n",
    "    temp_data = train_data.iloc[:,i+5]\n",
    "    plt.subplot(7,3,i+1)\n",
    "    plt.boxplot(temp_data)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "def process_targets(data_length, early_rul = None):\n",
    "    \"\"\" \n",
    "    Takes datalength and earlyrul as input and \n",
    "    creates target rul.\n",
    "    \"\"\"\n",
    "    if early_rul == None:\n",
    "        return np.arange(data_length-1, -1, -1)\n",
    "    else:\n",
    "        early_rul_duration = data_length - early_rul\n",
    "        if early_rul_duration <= 0:\n",
    "            return np.arange(data_length-1, -1, -1)\n",
    "        else:\n",
    "            return np.append(early_rul*np.ones(shape = (early_rul_duration,)), np.arange(early_rul-1, -1, -1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "def process_input_data_with_targets(input_data, target_data = None, window_length = 1, shift = 1):\n",
    "    \"\"\"Depending on values of window_length and shift, this function generates batchs of data and targets \n",
    "    from input_data and target_data.\n",
    "    \n",
    "    Number of batches = np.floor((len(input_data) - window_length)/shift) + 1\n",
    "    \n",
    "    **We don't check input dimensions uisng exception handling. So readers should be careful while using these\n",
    "    functions. If input data are not of desired dimension, either error occurs or something undesirable is \n",
    "    produced as output.**\n",
    "    \n",
    "    Arguments:\n",
    "        input_data: input data to function (Must be 2 dimensional)\n",
    "        target_data: input rul values (Must be 1D array)s\n",
    "        window_length: window length of data\n",
    "        shift: Distance by which the window moves for next batch. This is closely related to overlap\n",
    "               between data. For example, if window length is 30 and shift is 1, there is an overlap of \n",
    "               29 data points between two consecutive batches.\n",
    "        \n",
    "    \"\"\"\n",
    "    num_batches = np.int(np.floor((len(input_data) - window_length)/shift)) + 1\n",
    "    num_features = input_data.shape[1]\n",
    "    output_data = np.repeat(np.nan, repeats = num_batches * window_length * num_features).reshape(num_batches, window_length,\n",
    "                                                                                                  num_features)\n",
    "    if target_data is None:\n",
    "        for batch in range(num_batches):\n",
    "            output_data[batch,:,:] = input_data[(0+shift*batch):(0+shift*batch+window_length),:]\n",
    "        return output_data\n",
    "    else:\n",
    "        output_targets = np.repeat(np.nan, repeats = num_batches)\n",
    "        for batch in range(num_batches):\n",
    "            output_data[batch,:,:] = input_data[(0+shift*batch):(0+shift*batch+window_length),:]\n",
    "            output_targets[batch] = target_data[(shift*batch + (window_length-1))]\n",
    "        return output_data, output_targets"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "def process_test_data(test_data_for_an_engine, window_length, shift, num_test_windows = 1):\n",
    "    \"\"\" This function takes test data for an engine as first input. The next two inputs\n",
    "    window_length and shift are same as other functins. \n",
    "    \n",
    "    Finally it takes num_test_windows as the last input. num_test_windows sets how many examplles we\n",
    "    want from test data (from last). By default it extracts only the last example.\n",
    "    \n",
    "    The function return last examples and number of last examples (a scaler) as output. \n",
    "    We need the second output later. If we are extracting more than 1 last examples, we have to \n",
    "    average their prediction results. The second scaler halps us do just that.\n",
    "    \"\"\"\n",
    "    max_num_test_batches = np.int(np.floor((len(test_data_for_an_engine) - window_length)/shift)) + 1\n",
    "    if max_num_test_batches < num_test_windows:\n",
    "        required_len = (max_num_test_batches -1)* shift + window_length\n",
    "        batched_test_data_for_an_engine = process_input_data_with_targets(test_data_for_an_engine[-required_len:, :],\n",
    "                                                                          target_data = None,\n",
    "                                                                          window_length = window_length, shift = shift)\n",
    "        return batched_test_data_for_an_engine, max_num_test_batches\n",
    "    else:\n",
    "        required_len = (num_test_windows - 1) * shift + window_length\n",
    "        batched_test_data_for_an_engine = process_input_data_with_targets(test_data_for_an_engine[-required_len:, :],\n",
    "                                                                          target_data = None,\n",
    "                                                                          window_length = window_length, shift = shift)\n",
    "        return batched_test_data_for_an_engine, num_test_windows"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "There are two scaling strategies that we can employ. We can scale columnwise, ignoring individual engine based scaling. Or we can scale enginewise."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Processed trianing data shape:  (17731, 30, 14)\n",
      "Processed training ruls shape:  (17731,)\n",
      "Processed test data shape:  (497, 30, 14)\n",
      "True RUL shape:  (100,)\n"
     ]
    }
   ],
   "source": [
    "test_data = pd.read_csv(\"/home/biswajit/data/cmapss_data/test_FD001.txt\", sep = \"\\s+\", header = None)\n",
    "true_rul = pd.read_csv(\"/home/biswajit/data/cmapss_data/RUL_FD001.txt\", sep = '\\s+', header = None)\n",
    "\n",
    "window_length = 30\n",
    "shift = 1\n",
    "early_rul = 125            \n",
    "processed_train_data = []\n",
    "processed_train_targets = []\n",
    "\n",
    "# How many test windows to take for each engine. If set to 1 (this is the default), only last window of test data for \n",
    "# each engine is taken. If set to a different number, that many windows from last are taken. \n",
    "# Final output is the average output of all windows.\n",
    "num_test_windows = 5     \n",
    "processed_test_data = []\n",
    "num_test_windows_list = []\n",
    "\n",
    "columns_to_be_dropped = [0,1,2,3,4,5,9,10,14,20,22,23]\n",
    "\n",
    "train_data_first_column = train_data[0]\n",
    "test_data_first_column = test_data[0]\n",
    "\n",
    "# Scale data for all engines\n",
    "scaler = StandardScaler()\n",
    "train_data = scaler.fit_transform(train_data.drop(columns = columns_to_be_dropped))\n",
    "test_data = scaler.transform(test_data.drop(columns = columns_to_be_dropped))\n",
    "\n",
    "train_data = pd.DataFrame(data = np.c_[train_data_first_column, train_data])\n",
    "test_data = pd.DataFrame(data = np.c_[test_data_first_column, test_data])\n",
    "\n",
    "num_train_machines = len(train_data[0].unique())\n",
    "num_test_machines = len(test_data[0].unique())\n",
    "\n",
    "# Process training and test data sepeartely as number of engines in training and test set may be different.\n",
    "# As we are doing scaling for full dataset, we are not bothered by different number of engines in training and test set.\n",
    "\n",
    "# Process trianing data\n",
    "for i in np.arange(1, num_train_machines + 1):\n",
    "    temp_train_data = train_data[train_data[0] == i].drop(columns = [0]).values\n",
    "    \n",
    "    # Verify if data of given window length can be extracted from training data\n",
    "    if (len(temp_train_data) < window_length):\n",
    "        print(\"Train engine {} doesn't have enough data for window_length of {}\".format(i, window_length))\n",
    "        raise AssertionError(\"Window length is larger than number of data points for some engines. \"\n",
    "                             \"Try decreasing window length.\")\n",
    "        \n",
    "    temp_train_targets = process_targets(data_length = temp_train_data.shape[0], early_rul = early_rul)\n",
    "    data_for_a_machine, targets_for_a_machine = process_input_data_with_targets(temp_train_data, temp_train_targets, \n",
    "                                                                                window_length = window_length, shift = shift)\n",
    "    \n",
    "    processed_train_data.append(data_for_a_machine)\n",
    "    processed_train_targets.append(targets_for_a_machine)\n",
    "\n",
    "processed_train_data = np.concatenate(processed_train_data)\n",
    "processed_train_targets = np.concatenate(processed_train_targets)\n",
    "\n",
    "# Process test data\n",
    "for i in np.arange(1, num_test_machines + 1):\n",
    "    temp_test_data = test_data[test_data[0] == i].drop(columns = [0]).values\n",
    "    \n",
    "    # Verify if data of given window length can be extracted from test data\n",
    "    if (len(temp_test_data) < window_length):\n",
    "        print(\"Test engine {} doesn't have enough data for window_length of {}\".format(i, window_length))\n",
    "        raise AssertionError(\"Window length is larger than number of data points for some engines. \"\n",
    "                             \"Try decreasing window length.\")\n",
    "    \n",
    "    # Prepare test data\n",
    "    test_data_for_an_engine, num_windows = process_test_data(temp_test_data, window_length = window_length, shift = shift,\n",
    "                                                             num_test_windows = num_test_windows)\n",
    "    \n",
    "    processed_test_data.append(test_data_for_an_engine)\n",
    "    num_test_windows_list.append(num_windows)\n",
    "\n",
    "processed_test_data = np.concatenate(processed_test_data)\n",
    "true_rul = true_rul[0].values\n",
    "\n",
    "# Shuffle training data\n",
    "index = np.random.permutation(len(processed_train_targets))\n",
    "processed_train_data, processed_train_targets = processed_train_data[index], processed_train_targets[index]\n",
    "\n",
    "print(\"Processed trianing data shape: \", processed_train_data.shape)\n",
    "print(\"Processed training ruls shape: \", processed_train_targets.shape)\n",
    "print(\"Processed test data shape: \", processed_test_data.shape)\n",
    "print(\"True RUL shape: \", true_rul.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Training and validation split\n",
    "\n",
    "We will take 20% of training data (sampled randomly) as our validation set. We will monitor the training of our model using the validation set."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Processed train data shape:  (14184, 30, 14)\n",
      "Processed validation data shape:  (3547, 30, 14)\n",
      "Processed train targets shape:  (14184,)\n",
      "Processed validation targets shape:  (3547,)\n"
     ]
    }
   ],
   "source": [
    "processed_train_data, processed_val_data, processed_train_targets, processed_val_targets = train_test_split(processed_train_data,\n",
    "                                                                                                            processed_train_targets,\n",
    "                                                                                                            test_size = 0.2,\n",
    "                                                                                                            random_state = 83)\n",
    "print(\"Processed train data shape: \", processed_train_data.shape)\n",
    "print(\"Processed validation data shape: \", processed_val_data.shape)\n",
    "print(\"Processed train targets shape: \", processed_train_targets.shape)\n",
    "print(\"Processed validation targets shape: \", processed_val_targets.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## LSTM model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "def create_compiled_model():\n",
    "    model = Sequential([\n",
    "        layers.LSTM(128, input_shape = (window_length, 14), return_sequences=True, activation = \"tanh\"),\n",
    "        layers.LSTM(64, activation = \"tanh\", return_sequences = True),\n",
    "        layers.LSTM(32, activation = \"tanh\"),\n",
    "        layers.Dense(96, activation = \"relu\"),\n",
    "        layers.Dense(128, activation = \"relu\"),\n",
    "        layers.Dense(1)\n",
    "    ])\n",
    "    model.compile(loss = \"mse\", optimizer = tf.keras.optimizers.Adam(learning_rate=0.001))\n",
    "    return model"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We will use a `Learning rate scheduler` callback that will change the learning rate after 5 epochs. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "def scheduler(epoch):\n",
    "    if epoch < 5:\n",
    "        return 0.001\n",
    "    else:\n",
    "        return 0.0001"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "callback = tf.keras.callbacks.LearningRateScheduler(scheduler, verbose = 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Epoch 00001: LearningRateScheduler reducing learning rate to 0.001.\n",
      "Epoch 1/10\n",
      "111/111 - 11s - loss: 3235.0520 - val_loss: 959.3463\n",
      "\n",
      "Epoch 00002: LearningRateScheduler reducing learning rate to 0.001.\n",
      "Epoch 2/10\n",
      "111/111 - 10s - loss: 767.4854 - val_loss: 604.6062\n",
      "\n",
      "Epoch 00003: LearningRateScheduler reducing learning rate to 0.001.\n",
      "Epoch 3/10\n",
      "111/111 - 10s - loss: 441.4935 - val_loss: 309.6396\n",
      "\n",
      "Epoch 00004: LearningRateScheduler reducing learning rate to 0.001.\n",
      "Epoch 4/10\n",
      "111/111 - 10s - loss: 262.4047 - val_loss: 235.7255\n",
      "\n",
      "Epoch 00005: LearningRateScheduler reducing learning rate to 0.001.\n",
      "Epoch 5/10\n",
      "111/111 - 10s - loss: 209.6315 - val_loss: 169.3395\n",
      "\n",
      "Epoch 00006: LearningRateScheduler reducing learning rate to 0.0001.\n",
      "Epoch 6/10\n",
      "111/111 - 10s - loss: 166.2892 - val_loss: 161.6054\n",
      "\n",
      "Epoch 00007: LearningRateScheduler reducing learning rate to 0.0001.\n",
      "Epoch 7/10\n",
      "111/111 - 10s - loss: 161.6742 - val_loss: 161.6335\n",
      "\n",
      "Epoch 00008: LearningRateScheduler reducing learning rate to 0.0001.\n",
      "Epoch 8/10\n",
      "111/111 - 10s - loss: 157.9042 - val_loss: 154.4329\n",
      "\n",
      "Epoch 00009: LearningRateScheduler reducing learning rate to 0.0001.\n",
      "Epoch 9/10\n",
      "111/111 - 10s - loss: 154.8922 - val_loss: 151.1904\n",
      "\n",
      "Epoch 00010: LearningRateScheduler reducing learning rate to 0.0001.\n",
      "Epoch 10/10\n",
      "111/111 - 10s - loss: 153.6502 - val_loss: 149.7852\n"
     ]
    }
   ],
   "source": [
    "model = create_compiled_model()\n",
    "history = model.fit(processed_train_data, processed_train_targets, epochs = 10,\n",
    "                    validation_data = (processed_val_data, processed_val_targets),\n",
    "                    callbacks = callback,\n",
    "                    batch_size = 128, verbose = 2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Why did we run the model only for 10 epochs, even though the validation loss seems to be decreasing? Well, while training this model for more epochs, we previously observed that it is possible to decrease the validation loss to a very small number. But in that case, our actual test loss is not that great. This is because our model is overfitting the validation dataset. So to get a good test performance, we should stop our training at an intermediate value of the validation loss. We chose 10 epochs as that gives a good enough test error."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "RMSE:  15.165528763384067\n"
     ]
    }
   ],
   "source": [
    "rul_pred = model.predict(processed_test_data).reshape(-1)\n",
    "preds_for_each_engine = np.split(rul_pred, np.cumsum(num_test_windows_list)[:-1])\n",
    "mean_pred_for_each_engine = [np.average(ruls_for_each_engine, weights = np.repeat(1/num_windows, num_windows)) \n",
    "                             for ruls_for_each_engine, num_windows in zip(preds_for_each_engine, num_test_windows_list)]\n",
    "RMSE = np.sqrt(mean_squared_error(true_rul, mean_pred_for_each_engine))\n",
    "print(\"RMSE: \", RMSE)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Save the model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "tf.keras.models.save_model(model, \"FD001_LSTM_piecewise_RMSE_\"+ str(np.round(RMSE, 4)) + \".h5\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We will now compute the RMSE by taking only last example of each engine."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "RMSE (Taking only last examples):  15.12529934391931\n"
     ]
    }
   ],
   "source": [
    "indices_of_last_examples = np.cumsum(num_test_windows_list) - 1\n",
    "preds_for_last_example = np.concatenate(preds_for_each_engine)[indices_of_last_examples]\n",
    "\n",
    "RMSE_new = np.sqrt(mean_squared_error(true_rul, preds_for_last_example))\n",
    "print(\"RMSE (Taking only last examples): \", RMSE_new)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "If you are not convinced by above calculations, take a look at the last section of [this notebook](https://github.com/biswajitsahoo1111/rul_codes_open/blob/master/notebooks/cmapss_notebooks/CMAPSS_FD001_xgboost_piecewise_linear_degradation_model.ipynb)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "For CMAPSS data, along with RMSE another metric (S-score) is usually reported in literature. S-score is defined as:\n",
    "\n",
    "$$S= \\sum_{i=1}^N{s_i}$$\n",
    "\n",
    "where, \n",
    "\n",
    "$$\n",
    "\\begin{equation}\n",
    "    s_i=\n",
    "    \\begin{cases}\n",
    "      (e^{-\\frac{d_i}{13}})-1, & \\text{for}\\ d_i < 1 \\\\\n",
    "      (e^{\\frac{d_i}{10}})-1, & \\text{for}\\ d_i \\geq 1\\\\\n",
    "    \\end{cases}\n",
    "  \\end{equation}\n",
    "  $$\n",
    "  \n",
    "We can compute the S-metric as follows."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "def compute_s_score(rul_true, rul_pred):\n",
    "    \"\"\"\n",
    "    Both rul_true and rul_pred should be 1D numpy arrays.\n",
    "    \"\"\"\n",
    "    diff = rul_pred - rul_true\n",
    "    return np.sum(np.where(diff < 0, np.exp(-diff/13)-1, np.exp(diff/10)-1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "S-score:  448.43592916864617\n"
     ]
    }
   ],
   "source": [
    "s_score = compute_s_score(true_rul, preds_for_last_example)\n",
    "print(\"S-score: \", s_score)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Plot true and predicted RUL values\n",
    "plt.plot(true_rul, label = \"True RUL\", color = \"red\")\n",
    "plt.plot(preds_for_last_example, label = \"Pred RUL\", color = \"blue\")\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "It is very likely that readers may get sligtly different results while running this notebook on their system. This happens because of the nondeterministic nature of some deep learning operations and dependence of libraries like `Tensorflow` on computer architecture. Therefore, to make our results reproducible, we also share saved models of all our notebooks. All saved models can be found [here](https://github.com/biswajitsahoo1111/rul_codes_open/tree/master/saved_models/cmapss). A notebook describing the procedure to use the saved models can be found [here](https://github.com/biswajitsahoo1111/rul_codes_open/blob/master/notebooks/cmapss_notebooks/CMAPSS_using_saved_model_deep_learning.ipynb). As a final note remember that hyperparameter tuning is more of an art than science. It is possible to obtain better results than what has been obtained here by choosing better set of hyperparameters.\n",
    "\n",
    "For other reproducible results on RUL, interested readers can visit my [project page](https://biswajitsahoo1111.github.io/rul_codes_open). "
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "tf_cpu_23",
   "language": "python",
   "name": "tf_cpu_23"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
